from argparse import ArgumentParser
from typing import Any

from zerver.lib.management import ZulipBaseCommand
from zilencer.models import RemoteZulipServer


class Command(ZulipBaseCommand):
    help = """Add a remote Zulip server for push notifications."""

    def add_arguments(self, parser: ArgumentParser) -> None:
        group = parser.add_argument_group("command-specific arguments")
        group.add_argument("uuid", help="the user's `zulip_org_id`")
        group.add_argument("key", help="the user's `zulip_org_key`")
        group.add_argument(
            "--hostname", "-n", required=True, help="the hostname, for human identification"
        )
        group.add_argument("--email", "-e", required=True, help="a contact email address")

    def handle(self, uuid: str, key: str, hostname: str, email: str, **options: Any) -> None:
        RemoteZulipServer.objects.create(
            uuid=uuid, api_key=key, hostname=hostname, contact_email=email
        )
